package com.itany.corejava.code10_异常;

/**
 * @author MissChen
 * @version 1.0
 * @date 2023 年11月23日 11:29
 */
public class Test03_捕获异常 {
    public static void main(String[] args) {
        // test01();
        test02();
    }
    // 定义一个数组，有4个元素，故意取一个索引为4的
    // a除以b的时候，除数为0
    // 列举一个空指针异常
    public static void test01(){
      try{

          //数组下标越界异常
          String[] arrs={"admin","lucy","Lili","coco"};
          System.out.println(arrs[2]);

          //算术异常
          int a=9;
          int b=1;
          int c=a/b;

          //空指针异常
          String str=null;
          System.out.println(str.equals("admin"));
      }catch (ArrayIndexOutOfBoundsException e){

          //由于try语句中存在多个异常
          // 每个异常的处理可能不一样
          // 因此我们可以使用多个catch进行捕获
          // 捕获异常的时候，从上往下执行捕获
          // 捕获的时候要先捕获小的异常，再捕获大的异常
          // 如果先捕获RuntimeException，大的异常中可能会包含多个小的，此时下面的就不生效了
          // 如果先捕获大异常，再捕获小的，直接报错


          System.out.println("数组下标越界");
      }catch (ArithmeticException e){
          System.out.println("算术异常");
      }catch (NullPointerException e){
          System.out.println("空指针异常");
      }catch (RuntimeException e){
          System.out.println("运行时异常");
      }
    }

    public static void test02(){
        try{
            //数组下标越界异常
            // String[] arrs={"admin","lucy","Lili","coco"};
            // System.out.println(arrs[7]);

            //算术异常
            // int a=9;
            // int b=1;
            // int c=a/b;

            //空指针异常
            String str=null;
            System.out.println(str.equals("admin"));
        }catch(ArithmeticException | NullPointerException |ArrayIndexOutOfBoundsException e){
            // 当有多重异常的时候，可以通过|将多个异常捕获，捕获到这些异常中的任意一个进行处理
            System.out.println("捕获到了异常");
        }
    }




}
